#pragma once

class Color
{
public:
	Color();
	Color(char c);
	Color(float r, float g, float b);
	Color(float r, float g, float b, float a);
	Color(uchar r, uchar g, uchar b, uchar a);
	Color(int r, int g, int b, int a);
	Color(uint r, uint g, uint b, uint a);

	Color operator *(float l) const;
	Color operator +(const Color& p) const;
	Color operator -(const Color& p) const;

	void Repair();
	void SetFromChar(char color);

	float r;
	float g;
	float b;
	float a;

	static Color Random();
	static const Color Red;
	static const Color Green;
	static const Color Blue;
	static const Color Yellow;
	static const Color Pink;
	static const Color Cyan;
	static const Color White;
	static const Color Black;

};

bool operator != (const Color& c, const Color& d);
std::ostream& operator <<(std::ostream& str, const Color& color);